package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.manager.generico.ManagerPesquisarGenerico;
import br.com.foxinline.modelo.Bairro;
import br.com.foxinline.modelo.Dne;
import br.com.foxinline.modelo.FaceQuadra;
import br.com.foxinline.modelo.Quadra;
import br.com.foxinline.modelo.Setor;
import br.com.foxinline.servico.BairroServico;
import br.com.foxinline.servico.DneServico;
import br.com.foxinline.servico.FaceQuadraServico;
import br.com.foxinline.servico.QuadraServico;
import br.com.foxinline.util.Msg;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarFaceQuadra extends ManagerPesquisarGenerico<FaceQuadra> {

    @EJB
    QuadraServico quadraServico;
    @EJB
    BairroServico bairroServico;
    @EJB
    DneServico dneServico;
    @EJB
    FaceQuadraServico faceQuadraServico;
    private FaceQuadra faceQuadra;
    private FaceQuadra faceQuadraDelete;
    private List<FaceQuadra> faceQuadras;
    private Setor setor;
    private Bairro bairro;

    @Override
    @PostConstruct
    public void init() {

        setServico(faceQuadraServico);

        this.faceQuadra = new FaceQuadra();
        this.faceQuadra.setDne(new Dne());
        this.faceQuadraDelete = new FaceQuadra();

        this.setor = new Setor();
        this.bairro = new Bairro();

        this.faceQuadras = new ArrayList<FaceQuadra>();
    }

    @Override
    public void pesquisar() {

        if (this.faceQuadra.getDne() == null || this.faceQuadra.getDne().getId() == null) {

            if (this.bairro != null && this.bairro.getId() != null) {
                Dne dne = new Dne();
                dne.setBairro(this.bairro);
                this.faceQuadra.setDne(dne);
            }
        }

        if (this.faceQuadra.getQuadra() == null || this.faceQuadra.getQuadra().getId() == null) {
            Quadra quadra = new Quadra();
            quadra.setSetor(this.setor);

            this.faceQuadra.setQuadra(quadra);
        }

        this.entidadePesquisar = this.faceQuadra;

        getSearchResults().setFirst(0);
        onLoadModel();
    }

    @Override
    public void limpar() {
        init();
    }

    @Override
    public void remover() {

        try {
            faceQuadraServico.delete(this.faceQuadraDelete);
            Msg.messagemInfo(Msg.SuccessFull);

        } catch (EJBAccessException e) {

            System.err.println(e);
            Msg.messagemWarn(Msg.Failure);
        }
    }

    public List<Dne> autocompleteDne(String query) {
        if (this.bairro != null && this.bairro.getId() != null) {
            return dneServico.autocomplete(query, this.bairro);
        }

        return new ArrayList<Dne>();
    }

    public FaceQuadra getFaceQuadra() {
        return faceQuadra;
    }

    public void setFaceQuadra(FaceQuadra faceQuadra) {
        this.faceQuadra = faceQuadra;
    }

    public FaceQuadra getFaceQuadraDelete() {
        return faceQuadraDelete;
    }

    public void setFaceQuadraDelete(FaceQuadra faceQuadraDelete) {
        this.faceQuadraDelete = faceQuadraDelete;
    }

    public List<FaceQuadra> getFaceQuadras() {
        return faceQuadras;
    }

    public void setFaceQuadras(List<FaceQuadra> faceQuadras) {
        this.faceQuadras = faceQuadras;
    }

    public Setor getSetor() {
        return setor;
    }

    public void setSetor(Setor setor) {
        this.setor = setor;
    }

    public Bairro getBairro() {
        return bairro;
    }

    public void setBairro(Bairro bairro) {
        this.bairro = bairro;
    }
}
